<?php
require_once("login.php");
class Cliente extends Login
{

var $cuenta;
var $datosCliente;
var $cuentas;
var $contrato;
var $mediodePago;
var $payinstance;
var $mediodepagoinsert;
//var $conexion;

		function __construct()
		{
		include_once('cuenta.php');
		$this->cuenta = new Cuenta();
		}
//-------------------------------------------------------------------		
		function listarCuentas($login, $datos)
		{
		//preorden ventas aba. y luego al portald e registro. orden 399 y listo.
		//llama a la funcion de consultar  Datos en la clase cuenta
		//devuelve un arreglo con los datos.
		$tp_user = $this->cuenta->get_tp_user($login);
		if (isset($tp_user))
			{
			$cltinstance = $this->cuenta->getcltinstance($login); //cltinstance del usuario logueado.
				if($tp_user[0]['cltvalue']==1)//es administrador
				{
				$cltinstance2 = $this->cuenta->getcltinstanceCI($datos);
				$this->cuentas = $this->cuenta->listar_cuentas($cltinstance2[0]['cltinstances']);
				}
				elseif($tp_user[0]['cltvalue']==2)//es usuario normal
				{
				$cedula_user=$this->obtenerCedula($cltinstance[0]['cltinstanceid']);
						if(strcmp($datos, $cedula_user[0]['cltvalue'])==0)
							{ 
							$this->cuentas  = $this->cuenta->listar_cuentas($cltinstance[0]['cltinstanceid']);
							}
				}			
			return($this->cuentas);
			
			}
		else
		{return "No se encontraron datos 6";}
		}
//--------------------------------------------------------------------------------------------------------
		function listardatosdelCliente($login, $permiso, $datos, $inicio, $RegistrosAMostrar)
		{
		//llama a la funcion de consultar  Datos en la clase cuenta
		//devuelve un arreglo con los datos.
		//procesa los datos y valida a una pagina para mostrarloss
		$cltinstance = $this->cuenta->getcltinstance($login);
		if (isset($cltinstance))  //tengo el cltinstance y consulto en la bd para obtener los datos del cliente.
			{
					$tp_user= $this->cuenta->get_tp_user($login);
			
					if ($tp_user[0]['cltvalue']==1) //usuario admin
						{
						$cltinstance2 = $this->cuenta->getcltinstanceCI($datos);
						$datosCliente = $this->cuenta->consultardatosclientes($cltinstance2[0]['cltinstances'], $inicio, $RegistrosAMostrar);
						$nro_registro = $this->contarNroRegistros($cltinstance2[0]['cltinstances']);
						}
					elseif ($tp_user[0]['cltvalue']==2) //es usuario normal
					{
						$cedula_user=$this->obtenerCedula($cltinstance[0]['cltinstanceid']);
							if(strcmp($datos, $cedula_user[0]['cltvalue'])==0)
							{ 	$datosCliente = $this->cuenta->consultardatosclientes($cltinstance[0]['cltinstanceid'], $inicio, $RegistrosAMostrar);
								$nro_registro= $this->contarNroRegistros($cltinstance[0]['cltinstanceid']);
							}
							
							else
							{$_SESSION['msg']="El usuario solo puede consultar/modificar sus datos.";}
					}
					if (isset($datosCliente))
				 	{$j=0;
				 
				 		for ( $i=0; $i<(count($datosCliente)); $i++)
						{
						if ($datosCliente[$i]['cltattributename']!='PASSWORD' and $datosCliente[$i]['cltattributename']!='ELIMINADO' and  $datosCliente[$i]['cltattributename']!='TIPO_USER')
							{
					 		$datosClientes[$j]['cltattributename'] = $datosCliente[$i]['cltattributename'];
					 		$datosClientes[$j]['cltvalue'] = $datosCliente[$i]['cltvalue'];
							$j++;
							}
						}
				 	$_SESSION['nroreg']= $nro_registro; 
				 	return $datosClientes;
				 	
					} 
					else
					{
					return $_SESSION['msg'];
					}
			}
		else {
			$cltinstance="No se consiguieron Datos1 con el cltinstance";
			return $cltinstance;
			}

		}
		
//-----------------------------------------------------------------------------------------------
		function listardatosdeCuenta($cedula, $login, $inicio, $registrosmostrar)
		{
		//lista los contratos asociados a un cliente
		//llama a la funcion de consultar Datos de cuentas en la clase cuenta
		//devuelve un arreglo con los datos.
		//primero obtengo el tipo de usuario.
		$cltinstanceCI= $this->cuenta->getcltinstanceCI($cedula);
		$clientservice= $this->cuenta->getClientservice($cltinstanceCI[0]['cltinstances']);
		$tp_user= $this->cuenta->get_tp_user($login); //devuelve 1 (admin) o  2 (usuario normal)
			
			if ($tp_user[0]['cltvalue']==1) //es admin
				{
				$this->contrato= $this->cuenta->consultardatosContrato($clientservice[0]['idclientservices'],$inicio, $registrosmostrar);
				}
			elseif($tp_user[0]['cltvalue']==2) //es usuario normal
				{ 	//obtengo el cltinstance por la cedula y el del login. si son iguales puede consultar
					$cltinstancelogin[0]['cltinstanceid'] = $this->cuenta->getcltinstance($login);
					if(strcmp($cltinstancelogin[0]['cltinstanceid'], $cltinstanceCI[0]['cltinstances'])==0) //puede consultar sus datos
						{
						$this->contrato= $this->cuenta->consultardatosContrato($clientservice[0]['idclientservices'],$inicio, $registrosmostrar);
						}
					else
					{
					$_SESSION['msg']="No posee Permisos Asociados, solo puede consultar sus datos.";
					}
				}
			if ($this->contrato)
			{ return $this->contrato;}
			else
			{ return $this->contrato="No se encontraron datos  del contrato2";}
		}
		
//-----------------------------------------------------------------------------------------------
		function listar_history_plan($login, $cedula)
		{
		//
		}
		
//-----------------------------------------------------------------------------------------------------
		function guardarDatosCliente($datos, $cedula)
		{
		//return $datos; $sql       = "UPDATE ".$tabla." SET ".$campos." WHERE ".$donde;//die($sql);
			//verificar que tipo de usuario es.
			//obtener el cltinstace con la cedula enviada.
			$cltinstance2 = $this->cuenta->getcltinstanceCI($cedula);
			foreach ($datos as $key => $value)
			{
			if ($datos[$key]!='Guardar');
			{
			$tabla="cltvalues";
			$campos="cltvalue='".$value."'";
			$donde="cltinstances='".$cltinstance2[0]['cltinstances']."' and cltattributename='".$key."'";
			$resultado= $this->cuenta->conexion->Actualizar($tabla,$campos,$donde);	}	
			}
			return($resultado);
		}
//------------------------------------------------
		function obtenerCedula($cltinstances)
		{

		$campos=" cltvalue ";
		$tabla=" cltvalues ";
		$donde=" where cltinstances= ".$cltinstances." and (cltattributename='CEDULA' or cltattributename='RIF')";
		$resultado= $this->cuenta->conexion->Consultar($campos, $tabla,$donde);	
			if (isset($resultado))
				{
				return $resultado;
				}
			else
			{
			return "No se encontro la cedula";
			}
		}
//---------------------------------------------------------------------------------------
		function contarNroRegistros($cltinstances)
		{
			$campos=" COUNT(*) as nro_reg";
			$tabla=" cltvalues ";
			$donde=" where cltinstances= ".$cltinstances." and cltattributename<>'PASSWORD' AND cltattributename<>'ELIMINADO' AND cltattributename<>'TIPO_USER' AND cltattributename<>'RESPUESTA' AND cltattributename<>'GRUPO' AND cltattributename<>'LOGIN_ASAP'";
			$resultado= $this->cuenta->conexion->Consultar($campos, $tabla,$donde);	
				if (isset($resultado))
					{
					return $resultado;
					}
				else
					{
					return "no";
					}
		}
//-------------------------------------------------------------------------------------------------------------------------------------------
		function listarmediodepago($cedula, $login, $inicio)	
		{
//verificar tipo de usuario
//si es admin consulto con la cedula recibida
//si es usuario consulto con la ci  del usuario
//en la consulta--> consultar con la cedula el cltinstace y listar todo lo asociado con la tabla payinstances. y listo. :D
//pendiente por optimizar----> meter en una funcion que devuelva true o false.
		$fin=6;
		$cltinstance = $this->cuenta->getcltinstance($login);
			if (isset($cltinstance))  //tengo el cltinstance y consulto en la bd para obtener los datos del cliente.
				{
						$tp_user= $this->cuenta->get_tp_user($login);
			
							if ($tp_user[0]['cltvalue']==1) //usuario admin
							{
							$cltinstance2 = $this->cuenta->getcltinstanceCI($cedula);
							$this->mediodePago= $this->listarmediodepagocliente($cltinstance2[0]['cltinstances'], $inicio, $fin);
							unset($_SESSION['nromdp']);
							$_SESSION['nromdp']=$this->contarnroregmdp($cltinstance2[0]['cltinstances']);
							}
							elseif ($tp_user[0]['cltvalue']==2) //es usuario normal
								{		
								$cedula_user=$this->obtenerCedula($cltinstance[0]['cltinstanceid']);
									if(strcmp($datos, $cedula_user[0]['cltvalue'])==0)
									{ 	
									$this->mediodePago=$this->listarmediodepagocliente($cltinstance[0]['cltinstanceid'], $inicio, $fin);
									unset($_SESSION['nromdp']);
									$_SESSION['nromdp']=$this->contarnroregmdp($cltinstance[0]['cltinstanceid']);
									}
									else
									{$_SESSION['msg']="El usuario solo puede consultar/modificar sus datos.";}
								}
						
				}
//fin de pendiente por optimizar OJO optimizacion
			if(isset($this->mediodePago))
			{
			return $this->mediodePago;
			}
			else
			{
			return $this->mediodePago="fallo";
			}
	}//fin de funcion

//------------------------------------------------------------------------------------
	function listarmediodepagocliente($cltinstances, $inicio, $fin)
	{
		$campos=" p.payinstanceid,  pv.payclassname as medio_de_pago, p.creationdate as fecha_de_creacion, pv.payattributename, pv.payvalue";
		$tabla=" payinstances p, payvalues pv ";
		$donde=" where cltinstaceid= ".$cltinstances. " and  p.payinstanceid=pv.payinstanceid limit ".$inicio.", ".$fin;
		$resultado= $this->cuenta->conexion->Consultar($campos, $tabla,$donde);	
		return $resultado;
	}
//-----------------------------------------
	function eliminarmediodepago($cedula, $login)
	{

	}
	function agregarmediodepago($cedula, $login , $mediodepago, $datosmdp)
	{
//Esta funcion la llama el controlador. cliente_action.php
//puedo tener varios servicios asociados a la misma tarjeta.
//1)	verifico el tipo de usuario que es.
//		si es admin envio la cedula para obtener cltinstance y obtener el medio de pago
//		si es usuario envio el usuario para obtener el clt instance y obtener el medio de pago.
//2) listo todos los medios de pago. 
//3) validar datos correcto de los atributos del medio de pago.
		$cltinstance = $this->cuenta->getcltinstance($login);
			if (isset($cltinstance))  //tengo el cltinstance y consulto en la bd para obtener los datos del cliente.
				{
						$tp_user= $this->cuenta->get_tp_user($login);
							if ($tp_user[0]['cltvalue']==1) //usuario admin
							{
							$cltinstance2 = $this->cuenta->getcltinstanceCI($cedula);
							$this->mediodepagoinsert = $this->guardarmediodepago($cltinstance2[0]['cltinstances'], $datosmdp, $mediodepago);	
							}
							elseif ($tp_user[0]['cltvalue']==2) //es usuario normal
							{		
								$cedula_user=$this->obtenerCedula($cltinstance[0]['cltinstanceid']);
								if(strcmp($datos, $cedula_user[0]['cltvalue'])==0)
								{ 	
								$this->mediodepagoinsert = $this->guardarmediodepago($cltinstance[0]['cltinstanceid'], $datosmdp, $mediodepago);	
								}
								else
								{$_SESSION['msg']="El usuario solo puede consultar/modificar sus datos.";}
							}
						
				}

	}
//-----------------------------------------------------------------------------------------------------------------------
	function guardarmediodepago($cltinstances, $datosmdp, $mediodepago) //el usuario ya esta validado solo falta guardar la funcion
	{
//realiza el insert en la tabla payinstances y en la tabla payvalues
//INSERT INTO PAYINSTANCES (payclassname, cltinstanceid, creationdate) values ( payclassname, cltinstance, now)
	$tabla="PAYINSTANCES";
	$campos=" payclassname, cltinstanceid, creationdate ";
	$valores= $mediodepago. ", ".$cltinstances.", ". date(); //pendiente con las fechas. dan problem por el formato.
	$resultado= $this->cuenta->conexion->Insertar($tabla,$campos,$valores);
//luego obtengo el payinstance atraves del clt instance
// y realizo el insert de los atributos teniendo el payinstanceid
		if (isset($resultado))
		{
			$this->payinstance = $this->getpayinstanceid($cltinstances);
	//insert into payvalues (payinstanceid, payclassname, payattributename, payvalue) values ('11111111', 'FACTURA_CANTV', 'NUEVOATT', 		'ALGOPROBAR')
				foreach ($datosmdp as $key => $value)
				{
					if ($datos[$key]!='Guardar')
						{
						$tabla="payvalues";
						$campos=" payinstanceid, payclassname, payattributename, payvalue ";
						$valores= $this->payinstance[0]['payinstanceid']. ", ".$mediodepago.", ".$key.", ".$value;
						$resultado= $this->cuenta->conexion->Insertar($tabla,$campos,$valores);	
						}	
				}
		}
	else
	{
	$resultado="no se registro medio de pago";
	}
return($resultado);
}
//-------------------------------------------------------------------------------------------------------------------------------
	function getpayinstanceid($cltinstance)
	{//SELECT payinstanceid FROM payinstances p where cltinstaceid=11111111
		$campos=" payinstanceid ";
		$tabla=" PAYINSTANCES ";
		$donde=" where cltinstaceid= ".$cltinstance;
		$resultado= $this->cuenta->conexion->Consultar($campos, $tabla,$donde);	
		return $resultado;
	}
//--------------------------------------------------------------------------------------------------------------------------------

	function validardatosMDP($cltinstance, $datosmdp )
	{
//validar que los datos de tarjeta de credito ejemplo el numero de tarjeta no este en la bd. o el numero de telefono no este en bd. 
//de manera que no exista dos medios de pago iguales.
//obtengo los medios de pago que tiene el cliente. y comparo
 	$this->listarmediodepagocliente($cltinstances);
	}

//--------------------------------------------------------------------------------------------------------------------------
		function contarnroregmdp($cltinstances)
		{
			$tabla="  payinstances p, payvalues pv ";
			$donde=" where cltinstaceid= ".$cltinstances. " and  p.payinstanceid=pv.payinstanceid ";
			$resultado= $this->cuenta->conexion->contarnroreg($tabla, $donde);
			return $resultado; 
		}
//-----------------------------------------------------------------------------------------------------------------------------------

		function modificarmdp()
			{ //instancia todos los obejtos que intervienen en la modificacion y/o agregacion de un medio de pago.
				$_SESSION['bancos']= $this->cuenta->listar_bancos();
				$_SESSION['tp_tarjeta']=$this->cuenta->listarTPtarjeta();
				$_SESSION['tp_cuenta']=$this->cuenta->listarTPcuenta();
			return NULL;
			}
		
}//fin de clase cliente

?>